import axios from "axios";

const baseURL = "http://localhost:8080";
/**
 * 申明一个常量对象
 * @type {{}}
 */
const taskRequest = {
    // 可以申明一些方法
    /**
     * 根据项目编号加载这个项目下的所有的任务
     * @param projectId
     * @param parentId 父任务编号
     * @param callBack  回调函数
     */
    loadTaskByProjectId(projectId, parentId = 0, callBack) {
        if (projectId) {
            // 发送请求
            axios.get(baseURL + "/task/list?projectId=" + projectId + "&parentId=" + parentId)
                // then是一个函数，这个函数的参数也是一个函数
                .then(res => {
                    // 这里的res就是得到的结果，但是这个结果已经被Axios封装了
                    callBack(res.data)// 调用回调函数，将结果数据传入回调函数
                })
        }
    }, save(task, callBack) {
        let url = baseURL + "/task/save";
        axios.post(url, task)
            .then(res => {
                callBack(res.data)
            })
    },//通过id查询任务信息,来展示任务对应的详情
    selectTaskDetailsByTaskId(taskId, callBack) {
        let url = baseURL + "/task/selectByTaskId?taskId=" + taskId
        axios.get(url)
            .then(res => {
                callBack(res.data)
            })
    },
    getById(taskId, callBack) {
        axios.get(baseURL + "/task/get?taskId=" + taskId)
            .then(res => callBack(res.data));
    }, edit(task, callBack) {
        let url = baseURL + "/task/edit"
        if (task) {
            axios.put(url, task)
                .then(res => {
                    callBack(res.data)
                })
        }
    }, deleteTask(taskId, callBack) {
        let url = baseURL + "/task/delete?taskId=" + taskId;
        axios.delete(url)
            .then(res => callBack(res.data))
    },
    deleteTasks(taskIds, callBack) {
        let url = baseURL + "/task/deletes?a=1";
        if (taskIds) {
            taskIds.forEach(id => url += '&taskId=' + id);
        }
        axios.delete(url)
            .then(res => callBack(res.data));
    }, countSubTasks(taskId, callBack) {
        let url = baseURL + "/task/count?taskId=" + taskId;
        axios.get(url)
            .then(res => {
                callBack(res.data)
            })
    }
}
// 将我们的请求对象暴露处理
export default taskRequest;